/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package managedBeans;
import managedBeans.util.JsfUtil;
import entidades.Grupo;
import entidades.GrupoPK;
import entidades.IdGrupoType;
import entidades.Usuario;
import ejb.MiInformacionUsuarioEJB;
import entidades.InformacionUsuario;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.ejb.EJB;

import javax.faces.model.SelectItem;
import java.util.List;
import java.util.ArrayList;
import javax.annotation.PostConstruct;
import java.security.Principal;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.faces.context.FacesContext;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.RequestScoped;
/**
 *
 * @author REX
 */
@ManagedBean(name="MiInformacionUsuarioController")
@SessionScoped
public class MiInformacionUsuarioController {

    private String confirmacionPassword;
    private IdGrupoType idGrupoType;
    private InformacionUsuario informacionUsuario;// = new InformacionUsuario();
    private InformacionUsuario miInformacionUsuario;
    private Grupo grupo;// =new Grupo();
    private GrupoPK grupoPK;// = new GrupoPK();
    @EJB
    private MiInformacionUsuarioEJB miInfoEJB;
  
    public InformacionUsuario getMiInformacionUsuario() {
         
            return miInformacionUsuario;
    }

    public void setMiInformacionUsuario(InformacionUsuario miInformacionUsuario) {
      
        this.miInformacionUsuario = miInformacionUsuario;
    }

    public MiInformacionUsuarioController() {
       
    }
    private Principal getUsuarioConectado(){
        HttpServletRequest peticion =
                (HttpServletRequest) FacesContext.getCurrentInstance().
                    getExternalContext().getRequest();
        return peticion.getUserPrincipal();
    }
    public boolean isConectado(){
        Principal usuarioConectado = getUsuarioConectado();
        if (usuarioConectado == null){
            return true;
        }
        return false;
    }
    public String getNombreDeUsuario(){
        Principal usuarioConectado = getUsuarioConectado();
        if (usuarioConectado != null){
            this.miInformacionUsuario = this.miInfoEJB.getUsuarioEJB().findInformacionUsuario(usuarioConectado.getName());
            return usuarioConectado.getName();
        }
        return "anonimo";
    }
  
    public String logout(){
        HttpServletRequest peticion =
                (HttpServletRequest) FacesContext.getCurrentInstance().
                getExternalContext().getRequest();

        Principal usuarioConectado = getUsuarioConectado();
        if (usuarioConectado != null){
            HttpSession session = peticion.getSession(false);
            if (session != null){
                session.invalidate();
            }
        }
        return "LOGOUT";
    }
    public IdGrupoType getIdGrupoType() {
        return idGrupoType;
    }

    public void setIdGrupoType(IdGrupoType idGrupoType) {
        this.idGrupoType = idGrupoType;
    }

    

    public String getConfirmacionPassword() {
        return confirmacionPassword;

    }

    public void setConfirmacionPassword(String confirmacionPassword) {
        this.confirmacionPassword = confirmacionPassword;
    }
   
    public MiInformacionUsuarioEJB getAltaEJB() {
        return miInfoEJB;
    }

    public void setAltaEJB(MiInformacionUsuarioEJB altaEJB) {
        this.miInfoEJB = altaEJB;
    }

   

    public GrupoPK getGrupoPK() {
        return grupoPK;
    }

    public void setGrupoPK(GrupoPK grupoPK) {
        this.grupoPK = grupoPK;
    }
  
    public Grupo getGrupo() {
        return grupo;
    }

    public void setGrupo(Grupo grupo) {
        this.grupo = grupo;
    }

    public InformacionUsuario getInformacionUsuario() {
        return informacionUsuario;
    }

    public void setInformacionUsuario(InformacionUsuario informacionUsuario) {
        this.informacionUsuario = informacionUsuario;
    }
    private boolean validaPassword(String password){
       boolean valido = true;
       if(!this.confirmacionPassword.equals(password)){
           JsfUtil.addErrorMessage("errorRePass");
           valido = false;
       }
        
        return valido;
    }
    private boolean validaUsuario(Usuario usuarioTemp){
        boolean valido = true;
       if(usuarioTemp!=null){
           JsfUtil.addErrorMessage("errorUsuarioRepetido");
           valido = false;
       }

        return valido;
    }
    public List<SelectItem> getTiposDeUsuario(){
        List<SelectItem> items = new ArrayList<SelectItem>();
            for(IdGrupoType tipo: IdGrupoType.values()){
                items.add(new SelectItem(tipo,tipo.toString()));
            }

        return items;
    }/*
    public String doAltaUsuario(){
            String idUsuario = informacionUsuario.getIdUsuario();
            Usuario Usuariotemp = altaEJB.getUsuarioEJB().findUsuario(idUsuario);

            grupoPK.setIdUsuario(idUsuario);
            grupo.setGrupoPK(grupoPK);
            String password = informacionUsuario.getUsuario().getPasswordCopiaTemp();

            if(validaPassword(password) && validaUsuario(Usuariotemp)){

                altaEJB.altaUsuario(informacionUsuario,grupo);
                JsfUtil.addSuccessMessage("usuarioRegistrado");
                return "usuarioRegistrado";

            }else{
                return "altaUsuarios.faces";
            }
    }*/
    
    public void doActualizarDatos(){
       
        miInfoEJB.actualiza(miInformacionUsuario);
        JsfUtil.addSuccessMessage("informacionActualizada");
       

    }



}
